﻿using System.Collections.Generic;

namespace HybridLab.Virtual.Interfaces
{
	/// <summary>
	/// Represents a VM on an IVirtualHost
	/// </summary>
	public interface IVirtualMachine
	{
		/// <summary>
		/// Apply a snapshot to the VM
		/// </summary>
		/// <param name="snapshotName">The name of the snapshot to apply</param>
		void ApplySnapshot(string snapshotName);

		/// <summary>
		/// Create a snaphot of the VM
		/// </summary>
		/// <param name="snapshotPrefix">The name of the snapshot to take</param>
		void CreateSnapshot(string snapshotPrefix);

		/// <summary>
		/// The IVirtualHost that this VM belongs to
		/// </summary>
		IVirtualHost Host { get; }

		/// <summary>
		/// The name of this VM
		/// </summary>
		string Name { get; }

		/// <summary>
		/// The DnsName of the guest OS of this VM
		/// </summary>
		string DnsName { get; }

		/// <summary>
		/// A List of the snapshots of this VM
		/// </summary>
		List<string> Snapshots { get; }
	}
}
